//! Header for the Circle-class
/*!
	\file Circle.h
	\author Andreas Lehner
	\date 13.11.2012

*/
#ifndef CIRCLE_H
#define CIRCLE_H

#include "Shape.h"

//! Describes a Circle (holds its radius and gets position from Shape)
/*!
\class Circle
The class Circle holds information of a Circle (radius) and gets its position from the
class Shape. Writes a circle to ostream and delegates output function (DoWrite) to filled and transparent circles.
(Template Method)
*/
class Circle : public Shape {
public:
	//! CTor of Circle
	/*!
	Constructs a circle by initializing its position, radius and color. Position and color are set in Shape
	(Shape constructor is called).
	\param pos The position of the circle on a picture.
	\param radius The radius of a circle.
	\param color The color a circle has.
	*/
	Circle(TPosition const& pos, float const& radius, std::string const& color) : Shape(pos, color), mRadius(radius){};

	void WriteShape(std::ostream & stream);
protected:
	//! the radius of a circle
	/*!
	mRadius describes the radius of a circle
	*/
	float mRadius;
	//! Write a circle to ostream
	/*!
	Write a circle (filled or transparent) to ostream. (abstract method)
	\param stream The stream where output is written to.
	*/
	virtual void DoWrite(std::ostream & stream) = 0;
};

#endif